package ModuloFuncionario;

import java.io.Console;
import java.util.Scanner;

import ModuloCliente.TelaCliente;
import ModuloFilme.TelaFilme;
import ModuloLocacao.TelaLocacao;

public class TelaFuncionario {
	
	private static FachadaFuncionario fachadaFuncionario;
	private static String cpfLogado;
	private static String cpf;
	private static Scanner in = new Scanner(System.in);
	private static Console console = System.console();
	private static int opcao = 0;
		
	public TelaFuncionario() {
		super();
		fachadaFuncionario = FachadaFuncionario.getInstancia();
	}

	public void Gui(){
		
		Funcionario root = new Funcionario("ROOT","","root","","adm");
		fachadaFuncionario.cadastrar(root);
		do{
			apagaTela();	
			telaLogin();
			String cpf = in.next();
			
				fachadaFuncionario.setLogado(cpf);
				menuFuncionario();	
		}while(opcao != 2);
	}
	
	public static void menuFuncionario(){
		
		apagaTela();
		
		cpfLogado = fachadaFuncionario.getLogado();
		
		if(fachadaFuncionario.login(cpfLogado)!= null){
			if(fachadaFuncionario.login(cpfLogado).getModalidade().equals("usu")){
				do{
				  telaUsu(fachadaFuncionario.login(cpfLogado));
				  opcao = in.nextInt();
				  if(opcao == 1){
					  apagaTela();
					  
				  }
				  if(opcao < 0 || opcao > 1){
					  System.out.println("Opcao Invalida");
					  System.out.println();
				  }
				}while(opcao != 0);
			}
			else{ //Se Adm
				do{
				  telaAdm(fachadaFuncionario.login(cpfLogado));
				  opcao = in.nextInt();
				  apagaTela();
				  if(opcao < 0 || opcao > 4){
					 System.out.println("Opcao Invalida");
					 System.out.println();
				  }
				  switch(opcao){
				  case 1: // Cadastro de funcionario
					  do{
						 telaCadastroFuncionarios();
				   		 opcao = in.nextInt();
				   		 apagaTela();
				   		 if(opcao < 0 || opcao > 5){
				   			System.out.println("Opcao Invalida");
				   			System.out.println();
				   		 }
				   		 switch(opcao){
				   		 case 1: System.out.println("DADOS DO FUNCIONARIO:");
		            		System.out.println();
		        			System.out.print("CPF:"+" ");
		        			cpf = in.next();
		        			apagaTela();
		        			// Chamado do verificador de cpf
		        			if(!Util.Validador.validaCPF(cpf) || fachadaFuncionario.verificaCPF(cpf)){
		            			System.out.print("Funcionario ja cadastrado ou CPF invalido! press<<Enter>>");
		            			console.readLine();
		            			apagaTela();
		        			}
		        			else{
		        				System.out.println("TIPO DE USUARIO");
		        				System.out.println();
		        				System.out.println("[adm]ADMINISTRADOR [usu]NORMAL");
		        				String modalidade = in.next();
		        				if(modalidade.equals("adm")||modalidade.equals("usu")){
		        					System.out.print("Nome:"+" ");
		                    		String nome = console.readLine();
		                    		System.out.print("Idade:"+" ");
		                    		String idade = in.next();
		                    		System.out.print("Data de Adimissao:"+" ");
		                    		String dataAdimissao = in.next();
		                    		System.out.println();		                    				                		                    		
		                    		apagaTela();
		                    		fachadaFuncionario.cadastrar(new Funcionario(nome,idade,cpf,dataAdimissao,modalidade));
		                    		System.out.println("FUNCIONARIO CADASTRADO");
		                    		System.out.println();
		        				}
		        				else{
		        					System.out.println("MODALIDADE INVALIDA!");
		        					System.out.println();
		        				}		
		        			}
		        				
		        		break;		
				   		case 2:System.out.print("CPF:"+" "); // busca
				   			cpf = in.next();
				   			apagaTela();
				   			if(fachadaFuncionario.buscar(cpf)!= null){
				   				System.out.println("-------------------------------------------------------------------------");
				   				System.out.print("NOME:"+" "+fachadaFuncionario.buscar(cpf).getNome()+" "+" "+"IDADE:"+" "+fachadaFuncionario.buscar(cpf).getIdade());
				   				System.out.println();
				   				System.out.println("DATA DE ADIMISSAO:"+" "+fachadaFuncionario.buscar(cpf).getDataDeAdimissao());				   
				   				System.out.println();
				   				System.out.println("-------------------------------------------------------------------------");
				   				
				   			}
				   			else{
				   				System.out.println("FUNCIONARIO NAO ENCONTRADO");
				   				System.out.println();
				   			}
				   		break;
				   		case 3://atualizar
				   		break;
				   		case 4:System.out.print("CPF:"+" ");//Excluir funcionario
			   			cpf = in.next();
			   			apagaTela();
			   			if(fachadaFuncionario.buscar(cpf)!= null ){
			   				System.out.println("-------------------------------------------------------------------------");
			   				System.out.print("NOME:"+" "+fachadaFuncionario.buscar(cpf).getNome()+" "+" "+"IDADE:"+" "+fachadaFuncionario.buscar(cpf).getIdade()+" "+"ANOS");
			   				System.out.println();
			   				System.out.println("DATA DE ADIMISSAO:"+" "+fachadaFuncionario.buscar(cpf).getDataDeAdimissao());			   				
			   				System.out.println();
			   				System.out.println("-------------------------------------------------------------------------");
			   				
			   				System.out.println("[1]EXCLUIR [2]CANCELAR");
			   				opcao = in.nextInt();
			   				if(opcao == 1){
			   					fachadaFuncionario.excluir(cpf);
			   				}
			   				else if(opcao == 2){
			   					System.out.println("CANCELADO");
			   					System.out.println();
			   				}
			   				else{
			   					System.out.println("OPCAO INVALIDA");
			   				}
			   			}
				   	}//Fim do else
				  }while(opcao != 5);
				  break; 
				  case 2:
					  TelaCliente.menuCliente();
					  
					  opcao = 0;
					  break;
				  case 3: // Menu Filme
					  TelaFilme.menuFilme();
				  	
					  break;
				  case 4: TelaLocacao telaLocacao = new TelaLocacao();
				  		telaLocacao.menuLocacao();
				  		opcao = 0;
				  break;
				  }//switch
				}while(opcao != 0);
			}
		}
		else{
			System.out.println("Funcionario nao existe!");
			System.out.println();
			System.out.println("[1]Tentar novamente [2] Desligar o sistema");
			opcao = in.nextInt();
			if(opcao < 1 || opcao > 2){
				System.out.println("Opcao invalida!");
				System.out.println();
			}
		}
	}

	private static void telaUsu(Funcionario funcionario){
		String cpf = fachadaFuncionario.getLogado();
		Funcionario logado = fachadaFuncionario.buscar(cpf);
		System.out.println("-------------------------------------");
		System.out.println("****** SOFTWARE VIDEO LOCADORA ******");
		System.out.println("-------------------------------------");
		System.out.println("*********** MENU INICIAL ************");
		System.out.println("-------------------------------------");
		System.out.println("Usuario logado:"+" "+ logado.getNome());
		System.out.println();
		System.out.println("[1] Menu Locacao");
		System.out.println("[2] Menu Cadastro Clientes");
		System.out.println("[0] Logout");
		System.out.print("Opcao: ");
	}
	
	private static void telaAdm(Funcionario funcionario){
		String cpf = fachadaFuncionario.getLogado();
		Funcionario logado = fachadaFuncionario.buscar(cpf);
		
		System.out.println("-------------------------------------");
		System.out.println("****** SOFTWARE VIDEO LOCADORA ******");
		System.out.println("-------------------------------------");
		System.out.println("*********** MENU INICIAL ************");
		System.out.println("-------------------------------------");
		System.out.println("Usuario logado:"+" "+ logado.getNome());
		System.out.println();
		System.out.println("[1] Menu Cadastro Funcionarios");
		System.out.println("[2] Menu Cadastro Clientes");
		System.out.println("[3] Menu Cadastro Filmes");
		System.out.println("[4] Menu Locacao");
		System.out.println("[0] Logout");
		System.out.print("Opcao: ");
		
	}
	private static void telaCadastroFuncionarios(){
		System.out.println("-------------------------------------");
		System.out.println("****** SOFTWARE VIDEO LOCADORA ******");
		System.out.println("-------------------------------------");
		System.out.println("***** MENU CADASTRO FUNCIONARIOS ****");
		System.out.println("-------------------------------------");
		System.out.println();
		System.out.println("[1] Cadastrar");
		System.out.println("[2] Buscar");
		System.out.println("[3] Atualizar");
		System.out.println("[4] Excluir");
		System.out.println("[5] Menu Inicial");
		System.out.print("Opcao: ");
	}
	
	private static void apagaTela(){
    	System.out.print( "\033[H\033[2J" ); 
    }

	private static void telaLogin(){
		System.out.println("-------------------------------------");
		System.out.println("****** SOFTWARE VIDEO LOCADORA ******");
		System.out.println("-------------------------------------");
		System.out.println("********** TELA DE LOGIN ************");
		System.out.println("-------------------------------------");
		System.out.print("Digite seu login:"+" ");
	}

}